package design_pattern.trigger.frame;

import java.util.Vector;

/**
 * @version 1.0.0
 * Created by cyd on 2022-08-29 17:11:10
 * @ClassName : design_pattern.trigger.EventCustomer
 * @Description : 抽象的事件消费者：
 * 定义了消费者的处理级别，同时也能在中介者模式中充当一个容器的作用，
 * 先保存事件消费类型，又定义了事件声明式消费方法
 */
public abstract class AbstractEventConsumer {

    // 容纳每个消费者能够处理的级别
    private Vector<EventConsumerType> customTypeVector = new Vector<EventConsumerType>();

    // 每个消费者都要声明自己处理哪一类别的事件
    public AbstractEventConsumer(EventConsumerType type) {
        addCustomType(type);
    }

    // 每个消费者可以消费多个事件
    public void addCustomType(EventConsumerType type) {
        customTypeVector.add(type);
    }

    // 得到自己的处理能力
    public Vector<EventConsumerType> getCustomTypeVector() {
        return customTypeVector;
    }

    // 每个事件都要对事件进行生命式消费
    public abstract void exec(ProductEvent event);

}





